<template>
    <div class="container">
        <!-- 幻灯片 -->
        <el-carousel
            :interval="5000"
            arrow="always"
        >
            <el-carousel-item
                v-for="(item, index) in banners"
                :key="index"
            >
                <div
                    class="banner-image"
                    :style="`
                background:url(${$axios.defaults.baseURL}${item.url}) center center no-repeat;
                background-size:contain contain;
                `"
                ></div>
            </el-carousel-item>
        </el-carousel>

        <!-- 搜索框 -->
        <div class="banner-content">
            <div class="search-bar">
                <!-- tab栏 -->
                <el-row
                    type="flex"
                    class="search-tab"
                >
                    <span
                        v-for="(item, index) in options"
                        :key="index"
                        :class="{ active: index === currentOption }"
                        @click="handleOption(index)"
                    >
                        <i>{{ item.name }}</i>
                    </span>
                </el-row>

                <!-- 输入框 -->
                <el-row
                    type="flex"
                    align="middle"
                    class="search-input"
                >
                    <input
                        v-model="searchValue"
                        @keyup.enter="handleSearch"
                        :placeholder="options[currentOption].placeholder"
                    />
                    <i
                        class="el-icon-search"
                        @click="handleSearch"
                    ></i>
                </el-row>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    created() {
        this.$axios({
            url: "/scenics/banners",
        }).then((res) => {
            // console.log(res.data);
            const { data } = res.data;
            this.banners = data;
        });
    },
    data() {
        return {
            banners: [],
            currentOption: 0,
            searchValue: "",
            options: [
                {
                    name: "攻略",
                    placeholder: "搜索攻略",
                    pageUrl: "/post?city=",
                },
                {
                    name: "酒店",
                    placeholder: "输入城市筛选酒店",
                    pageUrl: "/hotel?cityName=",
                },
                {
                    name: "机票",
                    placeholder: "搜索机票",
                    pageUrl: "/air",
                },
            ],
        };
    },
    methods: {
        handleOption(index) {
            // 如果点击的机票, 不需要显示输入框而是直接跳转即可
            if (index == 2) {
                this.$router.push(this.options[2].pageUrl);
            } else {
                this.currentOption = index;
            }
        },
        handleSearch() {
            // 这里是首页, 并不真正发请求
            // 只是将当前的搜索关键字传递到结果列表页
            // 由搜索结果页自己发请求, 这是后续的操作

            // 编程式导航 用法一样
            const optionItem = this.options[this.currentOption];
            this.$router.push(optionItem.pageUrl + this.searchValue);
        },
    },
};
</script>

<style lang="less" scoped>
.container {
    min-width: 1000px;
    margin: 0 auto;
    position: relative;

    /deep/ .el-carousel__container {
        height: 700px;
    }

    .banner-image {
        width: 100%;
        height: 100%;
    }

    .banner-content {
        z-index: 9;
        width: 1000px;
        position: absolute;
        left: 50%;
        top: 45%;
        margin-left: -500px;
        border-top: 1px transparent solid;

        .search-bar {
            width: 552px;
            margin: 0 auto;
        }

        .search-tab {
            .active {
                i {
                    color: #333;
                }
                &::after {
                    background: #eee;
                }
            }

            span {
                width: 82px;
                height: 36px;
                display: block;
                position: relative;
                margin-right: 8px;
                cursor: pointer;

                i {
                    position: absolute;
                    z-index: 2;
                    display: block;
                    width: 100%;
                    height: 100%;
                    line-height: 30px;
                    text-align: center;
                    color: #fff;
                }

                &:after {
                    position: absolute;
                    left: 0;
                    top: 0;
                    display: block;
                    content: "";
                    width: 100%;
                    height: 100%;
                    border: 1px rgba(255, 255, 255, 0.2) solid;
                    border-bottom: none;

                    transform: scale(1.1, 1.3) perspective(0.7em)
                        rotateX(2.2deg);
                    transform-origin: bottom left;

                    background: rgba(0, 0, 0, 0.5);
                    border-radius: 1px 2px 0 0;
                    box-sizing: border-box;
                }
            }
        }

        .search-input {
            width: 550px;
            height: 46px;
            background: #fff;
            border-radius: 0 4px 4px 4px;
            border: 1px rgba(255, 255, 255, 0.2) solid;
            border-top: none;
            box-sizing: unset;

            input {
                flex: 1;
                height: 20px;
                padding: 13px 15px;
                outline: none;
                border: 0;
                font-size: 16px;
            }

            .el-icon-search {
                cursor: pointer;
                font-size: 22px;
                padding: 0 10px;
                font-weight: bold;
            }
        }
    }
}
</style>